Ngarkimi i skedareve nepermjet formave
Nje nder inputet kryesore te HTML-se eshte inputi i tipit file
me ane te te cilit mund te ngarkojme file te ndryshme ne server si imazhe, dokumenta etj. Supozojme qe nje vizitor duhet te vendose te dhenat e meposhtme per tu regjistruar ne nje portal:
- emer
- foto
Duhet te ndertojme formen me tre inputet e nevojshme. Ne menyre qe forma te pranoje ngarkimin e fileve (ne kete rast imazh), duhet ti shtojme nje atribut ekstra enctype
me vleren multipart/form-data
.
<form action="" method="POST" enctype="multipart/form-data">
<input type="text" name="emri"/>
<input type="email" name="email"/>
<!-- Input i tipit 'file' -->
<input type="file" name="foto"/>
<input type="submit" value="Regjistrohu" name="regjistrohu"/>
</form>
Vizitori do te kete mundesine te shkruaje emrin, emailin, dhe te zgjedhe nje foto nga kompjuteri i tije nepermjet nje File Browser
qe do ti hapet ne forme dritareje. Pasi perdoruesi zgjedh imazhin ne sistemin e tij te file-ve ai klikon OK
. Me pas ai klikon ne butonin Regjistrohu
ku behet edhe submit forma. Ne kete moment ne server do te dergohet nje kerkese POST
me te dhenat e futura nga perdoruesi.
Ne skriptin tone, pervec faktit qe mund ti aksesojme te dhenat e thjeshta me ane te variablit $_POST
, te dhenat komplekse sic jane file-t e ngarkuar mund ti aksesojme nepermjet variablit super global $_FILES
. Ajo cfare ndodh ne te vertete me skedarin e ngarkuar eshte qe skedarit si fillim i merren informacionet e nevojshme si madhesia, prapashtesa, emri origjinal dhe nje emer i perkohshem ku skedari eshte ruajtur perkohesisht ne server. Keto informacione ruhet ne variablin super global $_FILES
.
Menyra sesi i trajtojme dhe i validojme ngarkimet e file-ve nepermjet formave HTML tregohet me poshte:
<?php
if (isset($_POST['regjistrohu'])) {
$emri = $_POST['emri'];
$email = $_POST['email'];
//Validojme ngarkimin e imazhit
if (isset($_FILES["foto"])) { // Kontrollojme nqs. eshte ngarkuar imazh
$error = FALSE;
if ($_FILES["file"]["error"] > 0) {
echo "<p> Gabim gjate hapjes se skedarit! </p>";
$error = TRUE;
}
$prapashtesat_e_lejuara = array("jpg", "png"); // Prapashtesat e lejuara
$temp = explode(".", $_FILES["foto"]["name"]);
$prapashtesa = end($temp); // Prapashtesa e skedarit te ngarkuar
if (!in_array($prapashtesa, $prapashtesat_e_lejuara)) {
echo "<p> Ju duhet te ngarkoni nje imazh ne formatin jpg ose png! </p>";
$error = TRUE;
}
// 3 Mb = 3 * 1024 * 1024 = 3145728 byte
if ($_FILES["file"]["size"] > 3145728) {
echo "<p> Madhesia e imazhit duhet te jete maksimumi 3 Mb! </p>";
$error = TRUE;
}
//Nqs. nuk ka error printojme mesazhin e ngarkimit te suksesshem
if (!$error) {
echo "<p> Fotoja u ngarkua me sukses! </p>";
}
} else {
echo "<p> Ju nuk keni ngarkuar asnje imazh! </p>";
}
}
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="text" name="emri"/>
<input type="email" name="email"/>
<!-- Input i tipit 'file' -->
<input type="file" name="foto"/>
<input type="submit" value="Regjistrohu" name="regjistrohu"/>
</form>